package vista;

import interfaces.IDibujable;
import interfaces.ILaberinto;

import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.geom.Line2D;

import javax.swing.ImageIcon;

import laberinto.Bolon;
import utilidades.Constantes;
import utilidades.UtilidadesDeArchivos;
import utilidades.Vector;

public class GraficosDelBolon implements IDibujable{
	private Bolon bolon;
	private ILaberinto nivel;
	private Image imagen;	
	private boolean modoDebug;
	
	public GraficosDelBolon(String img, Bolon bolon, ILaberinto nivel,
			boolean modoDebug) {
		this.bolon = bolon;
		this.nivel = nivel;
		this.modoDebug = modoDebug;
		this.imagen = new ImageIcon(UtilidadesDeArchivos.completarRuta(img)).getImage();
	}
	
	public void dibujar(Graphics g) {
		if(!bolon.fueComido()){
			int anchoCasilla = Constantes.ANCHO_PANTALLA / nivel.obtenerCantidadColumnas(); 
			int altoCasilla = Constantes.ALTO_PANTALLA / nivel.obtenerCantidadFilas(); 
		
			Vector posicion = bolon.obtenerPosicion();
			int centroX = posicion.obtenerCoordenadaX()*anchoCasilla + Constantes.OFFSET_CASILLAS_X;
			int centroY = posicion.obtenerCoordenadaY()*altoCasilla + Constantes.OFFSET_CASILLAS_Y;

			g.drawImage(imagen,centroX-Constantes.ANCHO_IMAGEN/2,centroY-Constantes.ANCHO_IMAGEN/2,Constantes.ANCHO_IMAGEN,Constantes.ALTO_IMAGEN,null);
	         	
			if(modoDebug){
				Graphics2D g2 = (Graphics2D)g;
				g2.setStroke(new BasicStroke(3));
				g.setColor(new Color(255,0,0));

				g2.draw(new Line2D.Float(centroX,centroY,centroX,centroY));	
			}
		}	
	}
}
